package com.mybatisplus.demo.android.util;

import com.mybatisplus.demo.android.model.DeviceInfo;

import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

/**
 * 日期排序工具类
 */
public class CollectionUtil {


    /**
     * string转date
     *
     * @param dateString
     * @return
     */
    private static Date stringToDate(String dateString) {
        ParsePosition position = new ParsePosition(0);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date dateValue = simpleDateFormat.parse(dateString, position);
        return dateValue;
    }

    //按日期排序（降序）
    public static void ListSort(List<DeviceInfo> list) {
        //Collections的sort方法默认是升序排列，如果需要降序排列时就需要重写compare方法
        Collections.sort(list, new Comparator<DeviceInfo>() {
            @Override
            public int compare(DeviceInfo o1, DeviceInfo o2) {
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                try {
                    //获取体检日期，并把其类型由String转成Date，便于比较。
                    Date dt1 = stringToDate(o1.getCreate_date());
                    Date dt2 = stringToDate(o2.getCreate_date());

                    //以下代码决定按日期降序排序，若将return“-1”与“1”互换，即可实现升序。
                    //getTime 方法返回一个整数值，这个整数代表了从 1970 年 1 月 1 日开始计算到 Date 对象中的时间之间的毫秒数。
                    if (dt1.getTime() > dt2.getTime()) {
                        return -1;
                    } else if (dt1.getTime() < dt2.getTime()) {
                        return 1;
                    } else {
                        return 0;
                    }

                } catch (Exception e) {
                    System.out.println("日期排序出错：");
                }
                return 0;
            }
        });
    }

}
